#ifndef __ISNTANCIADORDEELEMENTOS__
#define	__ISNTANCIADORDEELEMENTOS__

#include <string>

#include "Circulo.h"
#include "Rectangulo.h"
#include "Elemento.h"
#include "../../Elementos/TipoElemento.h"

using std::string;

class InstanciadorDeElementos {

private:
	/*
	*	Instancia un elemento del tipo especificado.
	*
	*	/R Devuelve una instancia del elemento o NULL en caso contrario.
	*/
	Modelo::Elemento* instanciarElementoModelo(TipoElemento tipo);

public:
	InstanciadorDeElementos();
	~InstanciadorDeElementos();

	/*
	*	Instancia un elemento del tipo especificado.
	*
	*	/R Devuelve una instancia del elemento o NULL en caso contrario.
	*/
	Elemento* instanciar(TipoElemento tipo);

	/*
	*	Instancia un elemento del tipo especificado y le carga su estado.
	*
	*	/R Devuelve una instancia del elemento o NULL en caso contrario.
	*/
	Elemento* instanciar(TipoElemento tipo, std::string estado);

};

#endif